/*
 *  WandererAI.h
 *  RiskAI
 *
 *  Wanderer AI puts all his troops into one fighting force and roams
 *  around the board with it, not bothering to defend anything.
 *
 *  He operates on the following priorities:
 *
 *    - Pick territories at random. Not like it really matters anyway...
 *    - Assign all troops to the strongest territory. Break a tie by figuring
 *			out which territory has the fewest enemies around it.
 *	  - After a successful attack, move all troops into new territory
 *    - One attack per turn: pick weakest territory bordering my strongest one
 *			Break ties based on which new territory would be surrounded by the
 *			most enemy territories (NOTE: not the most enemy armies)
 *    - Defending dice are smart-timid (doesn't go for 4's)
 *	  - Fortify troops to strongest nearby territory. Break ties by which one
 *			has the fewest enemies around it.
 *
 */

#ifndef WANDERER_AI_H_INCLUDED
#define WANDERER_AI_H_INCLUDED

#include "Player.h"

class CWandererAI : public CPlayer
{
public:
	
	CWandererAI(int iIndex, CBoard* pxBoard);

	// virtual functions overridden in derived classes
	virtual int PickTerritory(std::vector<int> viAvailables);
	virtual int AssignTroops(int iNumTroops);
	virtual int MoveTroops(int iSourceIndex, int iDestinationIndex);
	virtual RiskAction DecideOnAction(std::vector<int> viViableAttackers);
	virtual int PickDefendingDie(int* aiAttackDice, int iTarget);
	virtual CFortification FortifyTroops(std::vector<int> viFortifiers);

private:

	void PickHorde();

	int m_iHorde;
	int m_iTarget;

};

#endif // WANDERER_AI_H_INCLUDED